package com.sunday.gateway.core.filter.log;

import com.sunday.common.core.gson.GsonUtils;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;

import java.time.LocalDateTime;

/**
 * 访问日志
 *
 * @author zsy
 * @since 2024/1/31
 */
@Slf4j
@Data
public class AccessLog {

    /**
     * 访问实例
     */
    private String targetServer;
    /**
     * 请求路径
     */
    private String requestPath;
    /**
     * 请求方法
     */
    private String requestMethod;
    /**
     * 协议
     */
    private String schema;
    /**
     * 媒体类型
     */
    private String mediaType;
    /**
     * 请求账户ID
     */
    private Long currentUserId;
    /**
     * 请求账号
     */
    private String currentUsername;
    /**
     * 请求体
     */
    private String requestBody;
    /**
     * 请求ip
     */
    private String ip;
    /**
     * 请求时间
     */
    private LocalDateTime requestTime;
    /**
     * 响应状态码
     */
    private int statusCode;
    /**
     * 响应类型
     */
    private String responseContentType;
    /**
     * 响应体
     */
    private String responseBody;
    /**
     * 响应时间
     */
    private LocalDateTime responseTime;
    /**
     * 执行时间
     */
    private long executeTime;

    @Override
    public String toString() {
        return GsonUtils.SERIALIZE_NULL.toJson(this);
    }

}
